package com.ihighest.app.infox.im;

import io.rong.imkit.RongIM;
import io.rong.imkit.RongIM.OnSendMessageListener;
import io.rong.imlib.model.Message;
import io.rong.imlib.model.MessageContent;
import io.rong.message.ImageMessage;
import io.rong.message.RichContentMessage;
import io.rong.message.TextMessage;
import io.rong.message.VoiceMessage;
import android.text.TextUtils;
import android.util.Log;

import com.ihighest.app.infox.Const;

/**
 * 消息发送监听
 * 
 * @author Vity Created at 2015-11-1 上午1:04:00
 * @version 1.0
 */
public class SendMessageListener implements OnSendMessageListener {

	private static final String TAG = "SendMessageListener";

	/**
	 * 消息发送前监听器处理接口（是否发送成功可以从 SentStatus 属性获取）。
	 * 
	 * @param message
	 *            发送的消息实例。
	 * @return 处理后的消息实例。
	 */
	@Override
	public Message onSend(Message message) {
		System.out.println("RongIM onSend --> " + Const.IM_EXTRA);
		if (!TextUtils.isEmpty(Const.IM_EXTRA)) {
			if (message.getContent() instanceof TextMessage) {
				TextMessage msg = (TextMessage) message.getContent();
				msg.setExtra(Const.IM_EXTRA);
			}
			if (message.getContent() instanceof VoiceMessage) {
				VoiceMessage msg = (VoiceMessage) message.getContent();
				msg.setExtra(Const.IM_EXTRA);
			}
			if (message.getContent() instanceof ImageMessage) {
				ImageMessage msg = (ImageMessage) message.getContent();
				msg.setExtra(Const.IM_EXTRA);
			}
		}
		return message;
	}

	/**
	 * 消息在 UI 展示后执行/自己的消息发出后执行,无论成功或失败。
	 * 
	 * @param message
	 *            消息实例。
	 * @param sentMessageErrorCode
	 *            发送消息失败的状态码，消息发送成功 SentMessageErrorCode 为 null。
	 * @return true 表示走自已的处理方式，false 走融云默认处理方式。
	 */
	@Override
	public boolean onSent(Message message, RongIM.SentMessageErrorCode sentMessageErrorCode) {
		if (message.getSentStatus() == Message.SentStatus.FAILED) {
			if (sentMessageErrorCode == RongIM.SentMessageErrorCode.NOT_IN_CHATROOM) {
				// 不在聊天室
			} else if (sentMessageErrorCode == RongIM.SentMessageErrorCode.NOT_IN_DISCUSSION) {
				// 不在讨论组
			} else if (sentMessageErrorCode == RongIM.SentMessageErrorCode.NOT_IN_GROUP) {
				// 不在群组
			} else if (sentMessageErrorCode == RongIM.SentMessageErrorCode.REJECTED_BY_BLACKLIST) {
				// 你在他的黑名单中
			}
		}

		MessageContent messageContent = message.getContent();

		if (messageContent instanceof TextMessage) {// 文本消息
			TextMessage textMessage = (TextMessage) messageContent;
			Log.d(TAG, "onSent-TextMessage:" + textMessage.getContent());
		} else if (messageContent instanceof ImageMessage) {// 图片消息
			ImageMessage imageMessage = (ImageMessage) messageContent;
			Log.d(TAG, "onSent-ImageMessage:" + imageMessage.getRemoteUri());
		} else if (messageContent instanceof VoiceMessage) {// 语音消息
			VoiceMessage voiceMessage = (VoiceMessage) messageContent;
			Log.d(TAG, "onSent-voiceMessage:" + voiceMessage.getUri().toString());
		} else if (messageContent instanceof RichContentMessage) {// 图文消息
			RichContentMessage richContentMessage = (RichContentMessage) messageContent;
			Log.d(TAG, "onSent-RichContentMessage:" + richContentMessage.getContent());
		} else {
			Log.d(TAG, "onSent-其他消息，自己来判断处理");
		}

		return false;
	}

}
